package top.tan.service;


import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import top.tan.model.User;

/**
 * 注解说明：
 *  @Cacheable
 *      如果是类被注解，那么该类所有的方法下,如果在查询时，会先去缓存查询，缓存中没有，再去调用方法查询，并且方法的返回值也会被缓存
 *      如果是方法被注解，那么查询的时候，也会先去缓存查询，缓存中没有，再去调用方法查询，并且该方法的返回值也会被缓存
 * @CachePut
 *      插入数据和更新数据。一定会调用真实方法，再将方法返回值保存到缓存
 * @CacheEvict
 *      从缓存删除数据
 *
 */
public interface UserService {

    @Cacheable(key = "'user_'+#id", value = "'user'+#id")
    User getUser(String id);

    @CacheEvict(key = "'user_'+#id", value = "'user'+#id", condition = "#id!=1")
    void deleteUser(String id);

}